package cl.tinet.trainee.salas.dao;

import java.util.List;

import cl.tinet.trainee.salas.model.ReservaSala;
import cl.tinet.trainee.salas.model.Sala;
/**
 * 
 * Interfaz del DAO Sala.
 *
 * @author Naht-Sams
 */
public interface SalaDaoInterfaz {

    /**
     * Agregar un sala a la BD.
     * 
     * @param sala
     *            Datos de sala
     */
    void agregarSala(Sala sala);

    /**
     * Modificar un sala de la BD.
     * 
     * @param sala
     *            Datos de sala
     */
    void modificarSala(Sala sala);
;

    /**
     * Borrar un sala de la BD.
     * 
     * @param sala
     *            Objeto sala a borrar.
     */
    void borrarSala(Sala sala);

    /**
     * Buscar un sala antes de agregarlo a la BD.
     * 
     * @param sala
     *            objeto sala que se busca.
     * @return Devuelve un objeto sala.
     */
    Sala buscarSalaAntesDeCrear(Sala sala);

    /**
     * Buscar un sala especifica en la Bd.
     * 
     * @param sala
     *            objeto sala que se busca.
     * @return Devuelve un objeto sala.
     */
    Sala buscarSala(Sala sala);

    /**
     * Buscar lista completa de salas del sistema.
     * 
     * @return Devuelve una lista de salas.
     */
    List<Sala> buscarListaSalas();

    /**
     * Buscar las reservas que pueda tener una sala especifica.
     * 
     * @param sala
     *            Objeto con los datos de la sala que se esta buscando.
     * @return Devuelve la lista de salas.
     */
    List<ReservaSala> buscarReservaSalas(Sala sala);

}
